I2C is a type of serial computer bus that can be used to attach low-speed peripherals to a motherboard, embedded system, cell phone, or other electronic device. Typically I2C is used on a printed circuit board (PCB) to connect a limited number of slave devices to one master microcontroller. Nonetheless, the I2C protocol does allow for multiple masters, i.e. multiple modules which can each initiate transactions over the bus (such as to provide an instruction or information to another module, or read information from another module). It is even possible that every participant is a master. Further, I2C can be used to connect components via cables, rather than just within one PCB.
However, scaling the system up to multiple controllers connected together using cables can greatly increase the susceptibility to external disturbances which are not known at the design stage. A design cannot guarantee the absence of disturbances on the communication lines. It is known to use “buffer” integrated circuits in cases where I2C is used for communication over longer distances, e.g. cabled communication. These buffer ICs improve reliability but add expense.